
import Confirm from '@/components/confirm/confirm.js';
import store from '@/store';

/**
 * @typedef {(res: import('.').normalPortalResponse, payload: payloadDataSet) => void} ResponseHandler
 */

/**
 * @type {Record<string, ResponseHandler>}
 */

/**
 * 防抖错误处理
 * @type {ResponseHandler}
 */
export function dataBouncing(res, payload) {

}

/**
 * 请求结果正常
 * @type {ResponseHandler}
 */
export function success() {

}

/**
 * 账号互顶
 * @type {ResponseHandler}
 */
export function otherLogins(res, payload) {
     // 
     const { desc } = res.status || {};
     Confirm(
         { 
             title: '提示', 
             text: desc,
             showCancelButton: false,
             showClose: false,
             submitText: '重新登录'
         }
         ).then(ret => {
            store.dispatch('logout');
         }).catch(err => {
             console.log(err);
         })
}

/**
 * 未登录错误码
 * @type {ResponseHandler}
 */
export function notLogin(res, payload) {

     // 用户登录失效
     store.dispatch('logout');
}

/**
 * 账号被禁用
 * @type {ResponseHandler}
 */
export function accountDisabled(res, payload) {

     const { desc } = res.status || {};
     // 账号被禁用
     Confirm(
          {
               title: '提示',
               text: desc,
               showCancelButton: false,
               showClose: false,
               submitText: '知道了'
          }
     ).then(ret => {
        store.dispatch('logout');
     }).catch(err => {
          console.log(err);
     });
}

/**
 * 非白名单用户登录
 * @type {ResponseHandler}
 */
export function systemRefused(res, payload) {
     Confirm({
          title: '提示',
          text: '抱歉，您没有该平台的访问权限奥～如有需要请联系平台管理员，谢谢～',
          showCancelButton: false,
          showClose: false,
          submitText: '知道了'
     }).then(ret => {
        store.dispatch('logout');
     }).catch(err => {
          console.log(err);
     });
}

/**
 * 服务器异常：似乎出了什么状态，正在恢复中...
 * @type {ResponseHandler}
 */
export function serverError(res, payload) {
    const { status } = res;
    G_dispatchEvent('toast', { message: status.desc || '服务开小差了，请稍后再试～', type: 'error' });
}

/**
 * 不开放新用户注册
 * @type {ResponseHandler}
 */
 export function notAllowRegister(res, payload) {
    const {status} = res;
    Confirm({
         title: '提示',
         text: status.desc || '抱歉，暂不开放新用户注册，请使用已有帐号登录并绑定手机号后再试~',
         showCancelButton: false,
         showClose: false,
         submitText: '知道了'
    }).then(ret => {
        store.dispatch('logoutHome');
    }).catch(err => {
         console.log(err);
    });
}

/**
 * 未知错误
 * @type {ResponseHandler}
 */
export function unknownError(res, payload) {
    const { status } = res;
    G_dispatchEvent('toast', { message: status.desc || '服务开小差了，请稍后再试～', type: 'error' });
}